package modelo;
import bean.Conexion;

import java.awt.Image;
import java.io.File;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.DefaultListModel;


public class ProductoDAO  extends ConexionDao{
	
	public ProductoDAO() {
		super();	
	
	}	
	



	public void registrarArticulo(Producto producto) {
		String tiraSQL = "INSERT INTO articulo "+
		 				 "(id_produ, descripcion_produ, marca_produ, status_produ, preciocosto_produ," +
		 				 "precioventa_produ, stockmin_produ, stockmax_produ,existencia_produ) "+
		 				 "VALUES ('"+producto.getId_produ()+"', '"+producto.getDescripcion_produ()+
		 				 "','"+producto.getMarca_produ()+"','"+producto.getStatus_produ()+
		 				 "',"+ producto.getPreciocosto_produ()+","+ producto.getPrecioventa_produ()+
		 				 ","+ producto.getStockmin_produ() + ","+ producto.getStockmax_produ()+
		 				 ","+ producto.getExistencia_produ() + ")";
		Conexion.ejecutar(tiraSQL);
	}
	
	public ArrayList<Producto> consultarProductos() {
		ArrayList<Producto> articulos = new ArrayList<Producto>();
		String tiraSQL = "SELECT * FROM producto";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				
				String id = resultSet.getString("id_produ");
				String descripcion = resultSet.getString("descripcion_produ");
				String marca = resultSet.getString("marca_produ");
				String status = resultSet.getString("status_produ");
				Double preciocosto = resultSet.getDouble("preciocosto_produ");
				Double precioventa = resultSet.getDouble("precioventa_produ");
				Integer min = resultSet.getInt("stockmin_produ");
				Integer max = resultSet.getInt("stockmax_produ");
				Integer existencia = resultSet.getInt("existencia");
				
				Producto producto = new Producto(id, descripcion, marca, status,preciocosto,precioventa, min, max, existencia);
				articulos.add(producto);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return articulos;
	}
	
	//Articulos Disponibles
	public ArrayList<Producto> consultarProductoDisponibles() {
		ArrayList<Producto> articulos = new ArrayList<Producto>();
		String tiraSQL = "SELECT * FROM producto WHERE existencia > 0";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				
				String id = resultSet.getString("id_produ");
				String descripcion = resultSet.getString("descripcion_produ");
				String marca = resultSet.getString("marca_produ");
				String status = resultSet.getString("status_produ");
				Double preciocosto = resultSet.getDouble("preciocosto_produ");
				Double precioventa = resultSet.getDouble("precioventa_produ");
				Integer min = resultSet.getInt("stockmin_produ");
				Integer max = resultSet.getInt("stockmax_produ");
				Integer existencia = resultSet.getInt("existencia");
				
				Producto producto = new Producto(id, descripcion, marca, status,preciocosto,precioventa, min, max, existencia);
				articulos.add(producto);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return articulos;
	}
	
	
	//Articulos Disponibles
		public Producto consultarProductoPorId(String id) {
			Producto producto =null;
			String tiraSQL = "SELECT * FROM producto WHERE id_produ ='" + id + "'";
			ResultSet resultSet = Conexion.consultar(tiraSQL);		
			try {
				while (resultSet.next()) {
					
					String ids = resultSet.getString("id_produ");
					String descripcion = resultSet.getString("descripcion_produ");
					String marca = resultSet.getString("marca_produ");
					String status = resultSet.getString("status_produ");
					Double preciocosto = resultSet.getDouble("preciocosto_produ");
					Double precioventa = resultSet.getDouble("precioventa_produ");
					Integer min = resultSet.getInt("stockmin_produ");
					Integer max = resultSet.getInt("stockmax_produ");
					Integer existencia = resultSet.getInt("existencia");
					
					producto = new Producto(ids, descripcion, marca, status,preciocosto,precioventa, min, max, existencia);
					
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return producto;
		}
	
	
	
	// Modificar
	public void modificarProducto(Producto producto) {
		
				
		String tiraSQL = "UPDATE articulo SET id_produ = '" + producto.getId_produ() + "', descripcion_produ = '"+ producto.getDescripcion_produ() +		 
				"', marca_produ = '" + producto.getMarca_produ() + "', status_produ = '" + producto.getStatus_produ() +
				"', preciocosto_produ = " + producto.getPreciocosto_produ() + ", precioventa_produ = "+ producto.getPrecioventa_produ() +
				", stockmin_produ = "+ producto.getStockmin_produ() + ", stockmax_produ = "+ producto.getStockmax_produ() + 
				", existencia_produ = " + producto.getExistencia_produ()+ " WHERE id =" + producto.getId_produ();
				
		Conexion.ejecutar(tiraSQL);
	}
	
	
	
	
	// Eliminar
		public void eliminarFisicaProducto(String id) {
			String tiraSQL =  "DELETE FROM producto WHERE id_produ = "+ id;
									
			Conexion.ejecutar(tiraSQL);
		}

		public DefaultListModel BusquedaPredictiva(DefaultListModel modelo,String cad1) {
			
			String tiraSQL= ("select descripcion_produ from producto where descripcion_produ like'"+
					cad1+"%'");
			System.out.println(tiraSQL);
			/*if(cad2!=null){
				tiraSQL=("select nombre_clien ||' '|| apellido_clien from cliente where nombre_clien like'"+
						cad1+"% 'and apellido_clien like '"+cad2+"% '");
			}*/
			 ResultSet rs =Conexion.consultar(tiraSQL);
			 modelo.clear();
			try {
				 while (rs.next()) {
						modelo.addElement(rs.getObject(1));
					}
				
			}catch (SQLException e) {
				e.printStackTrace();
			}
			
			
			return modelo;
			
			
		}
	
	
}
